Immersive Sprint - SubClass Dance Party

checkpoint 09

1. primitive type이기 때문에 reference 가 바뀌는게 아님
2. x의 주소값이 들어가기 때문에, 변경됨
3. y = 2; // y는 더 이상 x의 주소를 가리키지 않고 2라는 값으로 채워집니다
4. outArray는 더 이상 myArray를 가리키지 않고, 연결고리가 끊어지는 (레퍼런스가 끊어지는 것)
새로 assign을 하는 것 : 연결고리가 끊어지는 것
5. outArray[2] = 25 // ourArray[2]는 myArray[2]를 참조합니다

6. arr // 새로 배열을 만든거나 다름 없음 : var arr = myArray; 즉 레퍼런스를 카피한 것.
arr[2] =25; // arr[2]는 myArray[2]를 참조합니다.

7. var myArray = [2, 3, 4, 5];
function doStuff(arr) {
  arr = [ ];// arr는 myArray를 가리키지 않고 새 배열 []을 참조합니다.
}
doStuff(myArray);

call by sharing이라고 하나, 좋은 용어인지는 모르겠음. copy by reference 선호함.
다들 많이 틀림. myArray를 덮어 씌우는게 아님. 끊는 거임.

8. var player = { score: 3 };
function doStuff(obj) { // var obj = player;
  obj.score = 2; //obj.score는 palyer.score를 참조합니다/
  obj = undefined; // obj는 더 이상 player를 참조하지 않고 undefined란 값으로 채워짐
}
doStuff(player);

9.
var player = { score: 3 };
function doStuff(obj) {
  obj = {};
}

player = doStuff(player);
<- 왼쪽으로 향한 화살표가 리턴 표시. player가 undefined로 assign 된 것.
doStuff는 아무 것도 리턴하지 않음.

10.
var obj = {
  inner: { x: 10 }
};
var example = obj.inner;
obj.inner   = undefined;
// 중첩된 object 혹은 array는 한 메모리 영역을 차지하는 것이 아닌 각각의 공간을 차지합니다.
// obj의 공간과, { x: 10}의 공간은 다릅니다
// example은 {x:10}의 메모리 주소를 차지합니다. 이미 메모리 주소가 연결됐고, 끊어지는 건 아님.

checkpoint 10

2. result는 value를 카피 했기 때문에 result는 변동이 없다(primitive type)
3.
4. func는 함수가 들어가고 g는 실행, h는 11이 들어감
obj.func는 12가 됐지만, obj.g는 그것과 관계가 없다!
5.
var x = 10;
function f () {
  x = x + 1;
  return x;
}
5.
f(); // 11
setTimeout(f, 1000); // 비동기 영역으로 넘어감, 보통 동기영역이 다 끝나면 실행되고 하나의 스코프가 끝나고 실행된다고 봄. 동기영역이 다 끝나고 콜백이 넘어옴.
f(); // 12
var result = x; // 12

6. setTimeout(12, 1000)이나 다를바가 없기 때문에 경우에 따라 에러
github에서 막아놓은 모양

8. 정의만 됐지 값이 할당된 적은 없기 때문에 에러.
// 타입 에러가 나옴

npm

package.json -> 디펜던시(dependencies, 종속된 패키지) 설정, 스크립트등을 기술해줌

npm -> node package manager

npm install -> 디펜던시를 까는 것(node_modules가 없는 이상 해줘야 함)

자바스크립트의 부모는 Object,

__proto__: assign이 안 되고, 크롬 전용 기능

http://unikys.tistory.com/320

Student.prototype = Object.create(Human.prototype);
Student.prototype.constructor = Student; //굳이 이렇게 추가로 설정해줘야 함.
Student.prototype.learn = function () {};

Human.call(this, name);
// Human.apply(this, arguments)
->Es6에서 해결

Subclassing 꼭 읽어야 함.

super는 부모의 this를 가리킴

beforeEach?

스펙spec 테스트에서 beforeEach 항목은 테스트를 실행하기 전에 꼭 한번 실행하라라는 뜻임.

beforeEach(function() {
  grub = new Grub()
})

클래스에선 리턴을 해주지 않아야 인스턴스를 받아올 수 있기 때문에 슈도클래시컬 한 방법에서는 리턴을 써주지 않음.

리턴 키워드를 컨스트럭터(클래스 만들어주는 생성자한테는 쓰지 않음.)

var bee = new Bee();

this == bee`


lastrites2018
Written bylastrites2018
I explain with words and code.

👉삽질의 역사는 노션 WIKI에서